package model.fantasmas;

import model.Laberinto;
import model.movimiento.Movimientos;
import model.posicion.Posicion;
import java.util.Iterator;
import java.util.List;


public class Inky extends Fantasma {

	/**
	 * Inky es el mas lento de todos los fantasmas e intenta alejarse 
	 * de la posicion de Pacman (va en direccion opuesta, lo contrario de Blinky)
	 * */
	private Laberinto elLaberinto;
	
	public Inky(Posicion posicion, Laberinto elLaberinto, int velocidad) {
		super(posicion,elLaberinto, velocidad);
		this.elLaberinto = elLaberinto;
	}
	
	@Override
	public Movimientos elegirDireccion(List<Movimientos> movimientos,Posicion pacmanPosicion) {		
		/**
		 * Elijo el punto a mayor distancia de la posicion de Pacman.
		 * */
		double distanciaAnterior = 0;
		double distanciaActual = 0;
		Movimientos movimientoElegido = movimientos.get(0);
		Iterator<Movimientos> iterador = movimientos.iterator();
		while(iterador.hasNext()){
			Movimientos movimiento = iterador.next();
			Posicion nuevaPosicion = elLaberinto.avanzar(this.getPosicion(),movimiento);
			distanciaActual = this.obtenerDistancia(nuevaPosicion,pacmanPosicion);
			if(distanciaActual>distanciaAnterior&&this.getDireccion().movimientoString()!=movimiento.movimientoString()){
				distanciaAnterior = distanciaActual;
				movimientoElegido = movimiento;
			}
		}
		return movimientoElegido;
	}
	
	public double obtenerDistancia(Posicion p1, Posicion p2) {
		return (Math.sqrt(Math.pow(p2.getPosX()-p1.getPosX(),2)+Math.pow(p2.getPosY()-p1.getPosY(),2)));
	}
}
